<?php
// +----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK ]
// +----------------------------------------------------------------------
// | Copyright (c) 2006-2016 http://thinkphp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: 流年 <liu21st@gmail.com>
// +----------------------------------------------------------------------
use think\api\Client;

//设置报错级别 ，TP5开发模式下报错级别非常高，及时变量未定义都直接抛出异常
error_reporting(E_ERROR | E_PARSE);

// 应用公共文件


if(!function_exists('format_bytes')) {
    /**
     * 格式化字节大小
     * @param number $size 字节数
     * @param string $delimiter 数字和单位分隔符
     * @return string            格式化后的带单位的大小
     * @author 麦当苗儿 <zuojiazi@vip.qq.com>
     */
    function format_bytes($size, $delimiter = '')
    {
        $units = array('B', 'KB', 'MB', 'GB', 'TB', 'PB');
        for ($i = 0; $size >= 1024 && $i < 5; $i++) $size /= 1024;
        return round($size, 2) . $delimiter . $units[$i];
    }
}


if(!function_exists('byte_format')) {
    /**
     * 数据容量格式转换
     * @param unknown $size 字节
     * @param number $dec 保留位数
     * @return string
     */
    function byte_format($size, $dec = 2)
    {
        $a = array("B", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB");
        $pos = 0;
        while ($size >= 1024) {
            $size /= 1024;
            $pos++;
        }
        return round($size, $dec) . " " . $a[$pos];
    }
}


if(!function_exists('parseRtn')) {
    /**
     * 将一个数组转成以id值为主键的新数组
     * @param array $data
     * @param string $key
     */
    function parseRtn($data, $key)
    {
        if (!is_array($data)) return $data;

        $rtn = array();
        foreach ($data as $val) {
            $rtn[$val[$key]] = $val;
        }

        return $rtn;
    }
}


if(!function_exists('parseArray')) {
    /**
     * 将一个数组转成只包含字段key的新数组
     * @param array $data
     * @param string $key
     */
    function parseArray($data, $key)
    {
        $rtn = array();
        if (empty($data) || !is_array($data)) return $rtn;

        foreach ($data as $val) {
            $rtn[] = $val[$key];
        }

        return $rtn;
    }
}


if(!function_exists('string2array')) {
    /**
     * 字符串到数组
     * @param string $data
     * @return multitype:|unknown
     */
    function string2array($data)
    {
        if ($data == '') return array();
        @eval("\$array = $data;");
        return $array;
    }
}


if(!function_exists('is_user_login')) {
    /**
     * 检测会员账号是否登录
     */
    function is_user_login()
    {
        $save_pre = config("common.user_login_save_pre");
        $save_type = config("common.user_login_save"); //登录凭证存储方式 1-session  2-cookie
        if (1 == $save_type) {
            $user = session($save_pre . '_auth');
            if (!$user) return 0;
            return session($save_pre . '_auth_sign') == data_auth_sign($user) ? $user['uid'] : 0;
        }

        $user = cookie($save_pre . '_auth');
        if (!$user) return 0;

        $uid = cookie($save_pre . '_auth_sign') == data_auth_sign($user) ? $user['uid'] : 0;
        if (!$uid) return 0;
        return $uid;
    }
}


if (!function_exists('is_login')) {
    /**
     * 检测管理员账号是否登录
     * @return integer 0-未登录，大于0-当前登录用户ID
     */
    function is_login()
    {
        $save_pre = config("common.admin_login_save_pre");
        $save_type = config("common.admin_login_save"); //登录凭证存储方式 1-session  2-cookie
        if (1 == $save_type) {
            $user = session($save_pre . '_auth');
            if (!$user) return 0;
            return session($save_pre . '_auth_sign') == data_auth_sign($user) ? $user['uid'] : 0;
        }

        $user = cookie($save_pre . '_auth');
        if (!$user) return 0;

        $uid = cookie($save_pre . '_auth_sign') == data_auth_sign($user) ? $user['uid'] : 0;
        if (!$uid) return 0;

        //cookie凭证，只能当天有效
        $time_limit = (date("Y-m-d") == date("Y-m-d", $user['last_login_time'])) ? true : false;
        if ($time_limit) return $uid;

        cookie($save_pre.'_auth', null);
        cookie($save_pre.'_auth_sign', null);
        session($save_pre.'_auth', null);
        session($save_pre.'_auth_sign', null);
        session($save_pre.'_rules',null);  //当前账号拥有的权限ids
        session($save_pre.'_author',null); //当前账号已验证的权限
        return 0;
    }
}


if (!function_exists('data_auth_sign')) {
    /**
     * 数据签名认证
     * @param array $data 被认证的数据
     * @return string       签名
     */
    function data_auth_sign($data)
    {
        //数据类型检测
        if (!is_array($data)) {
            $data = (array)$data;
        }

        //干扰字符串
        $secret = config('common.auth_secret_code');
        if ($secret) $data['secret_code'] = $secret;

        ksort($data); //排序
        $code = http_build_query($data); //url编码并生成query字符串
        $sign = sha1($code); //生成签名
        return $sign;
    }
}


if(!function_exists('checkPwd')) {
    /**
     * 登录密码格式验证
     * @param $param
     * @return bool
     */
    function checkPwd($param)
    {
        //数字、字母或下滑线   3-20位以内
        if (preg_match("/[\w]{3,20}/", $param)) return true;
        return false;
    }
}


if(!function_exists('file_scandir')) {
//遍历文件夹内容
    /*
     * @param string $dir 目录 如来 './data'  当前目录下data文件夹中的文件
    * @param array  对应文件夹下所有文件的路径
    */
    function file_scandir($dir)
    {
        $files = array();
        $dir_list = scandir($dir);
        foreach ($dir_list as $file) {
            if ($file != ".." && $file != ".") {
                if (is_dir($dir . "/" . $file)) {
                    $files[$file] = file_scandir($dir . "/" . $file);
                } else {
                    $files[] = $file;
                }
            }
        }

        return $files;
    }
}


if(!function_exists('get_extension')) {
//获取文件的后缀名
    function get_extension($file)
    {
        return substr($file, strrpos($file, '.') + 1);
    }
}


if(!function_exists('checkDir')) {
    /**
     * 检查路基如果不存在则创建
     * @author leiqianyong 2015-07-06
     */
    function checkDir($path)
    {
        if (!$path) {
            return false;
        }

        if (!is_dir($path)) {
            if (!mkdir($path, 0777, true)) {
                return false;
            }
        }

        return true;
    }
}


if(!function_exists('getImageFormat')) {
    /**
     * 返回图片的实际格式
     * @author leiqianyong 2015-9-5 9:06 AM
     */
    function getImageFormat($filename)
    {
        if (!is_file($filename)) return false;
        //图像的类型，返回的是数字，其中1 = GIF，2 = JPG，3 = PNG，4 = SWF，5 = PSD，6 = BMP，7 = TIFF(intel byte order)，8 = TIFF(motorola byte order)，9 = JPC，10 = JP2，11 = JPX，12 = JB2，13 = SWC，14 = IFF，15 = WBMP，16 = XBM
        $info = getimagesize($filename);
        $ext = array(1 => 'gif', 2 => 'jpg', 3 => 'png', 6 => 'bmp');
        return $ext[$info[2]];
    }
}


if(!function_exists('getExt')) {
//获取文件后缀
    function getExt($filename)
    {
        if (!$filename) return false;
        return substr(strrchr($filename, '.'), 1);
    }
}


if(!function_exists('get_week')) {
    function get_week()
    {
        $weekarray = array('天', '一', '二', '三', '四', '五', '六');
        return $weekarray[date("w")];
    }
}


if (!function_exists('img_thumb')) {
    /**
     * 获取缩略图片，没有这返回原图
     * @param unknown $imgpath
     * @param string $size
     * @return boolean|unknown|string
     */
    function img_thumb($imgpath, $size = '400x300')
    {
        if (!$imgpath) return false;

        if (!$size) return $imgpath;

        $filename = $imgpath . '_' . $size . substr(strrchr($imgpath, '.'), 0);
        if (!file_exists('.' . $filename)) return $imgpath;
        return $filename;
    }
}

if(!function_exists('get_sex_rtn')){
    //返回性别信息
    function get_sex_rtn($type){
        $rtn=[0=>'保密',1=>'男',2=>'女'];
        return $rtn[$type]?$rtn[$type]:$rtn;
    }
}


if(!function_exists('show_price')){
    //应用市场，显示应用价格
    function show_price($vo){
        if(!$vo['price_min'] && !$vo['price_max']){
            return '价格面议';
        }

        if($vo['price_min'] && $vo['price_max'] && $vo['price_min']<$vo['price_max']){
            return "￥".$vo['price_min']." 起";
        }

        if($vo['price_min'] && $vo['price_max'] && $vo['price_min']==$vo['price_max']){
            return "￥".$vo['price_min'];
        }
    }
}

if(!function_exists('get_cash_rtn')){
    //返回性别信息
    function get_cash_rtn($type){
        $rtn=[1=>'充值',2=>'扣款',3=>'购买应用'];
        return $rtn[$type]?$rtn[$type]:$rtn;
    }
}


if(!function_exists('is_mobile')) {
    /**
     * 验证手机号格式
     * @param string $mobile 手机号
     */
    function is_mobile($mobile)
    {
        if (!$mobile) return false;

        $exp = "/^1[0-9]{10}$/";
        if (preg_match($exp, $mobile)) return true;
        return false;
    }
}


if(!function_exists('api')) {
    /**
     * API接口调用助手函数
     * @return Client
     */
    function api()
    {
        return new Client('1c07101ddab0ad0dd662a5ed0bd0af8d');
    }
}